package com.google.code.lf.gfm.model.grisbi.compte;

import java.math.BigDecimal;
import java.util.Date;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import com.google.code.lf.commons.util.ToStringHelper;
import com.google.code.lf.commons.xml.bind.adapter.XmlBigDecimalAdapter;
import com.google.code.lf.commons.xml.bind.adapter.XmlDateAdapter;

/**
 * Bean représentant le détail d'un compte dans le fichier de données <a href="http://grisbi.org/">Grisbi</a>.
 * <br/>Le binding bean/xml utilise <a href="https://jaxb.dev.java.net/">JAXB</a>.
 * 
 * @see Compte.
 */
@XmlRootElement(name="Details")
@XmlAccessorType(XmlAccessType.NONE)
@SuppressWarnings("unused")
public class CompteDetails {
	@XmlElement(name="Nom")
	private String nom;

	@XmlElement(name="Id_compte")
	private String id;

	@XmlElement(name="No_de_compte")
	private int numero;

	@XmlElement(name="Titulaire")
	private String titulaire;

	@XmlElement(name="Type_de_compte")
	private int typeDe;

	@XmlElement(name="Nb_operations")
	private long nbOperations;

	@XmlElement(name="Devise")
	private int idDevise;

	@XmlElement(name="Banque")
	private int idBanque;

	@XmlElement(name="Guichet")
	private String codeGuichet;

	@XmlElement(name="No_compte_banque")
	private String numeroBancaire;

	@XmlElement(name="Cle_du_compte")
	private String cle;

	@XmlElement(name="Solde_initial")
	@XmlJavaTypeAdapter(XmlBigDecimalAdapter.class)
	private BigDecimal soldeInitial;

	@XmlElement(name="Solde_mini_voulu")
	@XmlJavaTypeAdapter(XmlBigDecimalAdapter.class)
	private BigDecimal soldeMiniVoulu;

	@XmlElement(name="Solde_mini_autorise")
	@XmlJavaTypeAdapter(XmlBigDecimalAdapter.class)
	private BigDecimal soldeMiniAutorise;

	@XmlElement(name="Solde_courant")
	@XmlJavaTypeAdapter(XmlBigDecimalAdapter.class)
	private BigDecimal soldeCourant;

	@XmlElement(name="Date_dernier_releve", nillable=true)
	@XmlJavaTypeAdapter(XmlDateAdapter.class)
	private Date dateDernierReleve;

	@XmlElement(name="Solde_dernier_releve")
	@XmlJavaTypeAdapter(XmlBigDecimalAdapter.class)
	private BigDecimal soldeDernierReleve;

	@XmlElement(name="Dernier_no_de_rapprochement")
	private String idDernierRapprochement;

	@XmlElement(name="Compte_cloture")
	private int isCloture;

	@XmlElement(name="Affichage_r")
	private int affichageR;

	@XmlElement(name="Nb_lignes_ope")
	private int nbLignesOpe;

	@XmlElement(name="Commentaires")
	private String commentaire;

	@XmlElement(name="Adresse_du_titulaire")
	private String adresseTitulaire;

	@XmlElement(name="Nombre_de_types")
	private int nbTypes;

	@XmlElement(name="Type_defaut_debit")
	private int idTypeDefautDebit;

	@XmlElement(name="Type_defaut_credit")
	private int idTypeDefautCredit;

	@XmlElement(name="Tri_par_type")
	private int isTriParType;

	@XmlElement(name="Neutres_inclus")
	private int isNeutresInclus;

	@XmlElement(name="Ordre_du_tri")
	private String ordreTri;

	/**
	 * Méthode <code>toString()</code> utilisant la réflection pour détailler l'objet.
	 * 
	 * @see ToStringHelper#toString()
	 */
	@Override
	public String toString() {
		return ToStringHelper.toString(this);
	}
}
